package com.lyy.encap;


/**
 * @Author: GZQ
 * @date: 2024/11/12 22:48
 * <p>
 * 封装课堂练习
 * 创建程序, 在其中定义两个类：Account类和AccountTest类, 体会封装性。
 * 1. Account类要具有属性：名字 (长度为2位3位或4位)、
 * 余额(必须 > 20)、密码(必须是6位), 如果不满足, 则给出提示信息, 并给出默认值
 * 2. 通过setXxx的方法给Account对象的属性赋值
 * 3. 在AccountTest类中测试
 * <p>
 * 小提示： 字符串为空 String str = "";
 * int len = str.length(); 字符串的长度
 */

public class Account {

    /**
     * 为了封装, 将3个属性设置为private
     */
    private String name;
    private double balance;
    private String pwd;

    /**
     * 提供两个构造器
     */

    public Account() {
    }

    public Account(String name, double balance, String pwd) {
        this.setName(name);
        this.setBalance(balance);
        this.setPwd(pwd);
    }

    public String getName() {
        return name;
    }

    /**
     * 姓名 (长度为2位3位4位)
     */
    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 4) {
            this.name = name;
        } else {
            System.out.println("姓名要求 (长度为2位3位4位), 默认值 xxx");
            this.name = "xxx";
        }

    }

    public double getBalance() {
        return balance;
    }

    /**
     * 余额 (必须 > 20)
     */
    public void setBalance(double balance) {
        if (balance > 20) {
            this.balance = balance;
        } else {
            System.out.println("余额(必须大于20) 默认为 0");
        }
    }

    public String getPwd() {
        return pwd;
    }

    /**
     * 密码 (必须是6位)
     */
    public void setPwd(String pwd) {
        if (pwd.length() == 6) {
            this.pwd = pwd;
        } else {
            System.out.println("密码要求 (必须是6位), 默认密码 888888");
            this.pwd = "888888";
        }
    }

    /**
     * 显示账号信息
     */
    public void showInfo() {
        System.out.println("账号信息为: name=" + name + " 余额=" + balance + " 密码" + pwd);
//        可以增加权限的校验
//        if() {
//            System.out.println("账号信息为: name=" + name + " 余额=" + balance + " 密码" + pwd);
//        } else {
//            System.out.println("你没有权限....");
//        }
    }
}
